package com.example.canatest.config;

import com.alibaba.otter.canal.protocol.CanalEntry;
import com.xpand.starter.canal.annotation.*;

/**
 * @author chen.qian
 * @date 2018/3/19
 */
@CanalEventListener
public class MyEventListener {

/*
    //监听 ： 当DB生成添加变化时
    @InsertListenPoint
    public void onEvent(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        rowData.getAfterColumnsList().forEach((c) -> System.err.println("By--Annotation: " + c.getName() + " ::   " + c.getValue()));
    }
    //监听 ： 当DB生成修改变化时
    @UpdateListenPoint
    public void onEvent1(CanalEntry.RowData rowData) {
        System.err.println("UpdateListenPoint");
        rowData.getAfterColumnsList().forEach((c) -> System.err.println("By--Annotation: " + c.getName() + " ::   " + c.getValue()));
    }
    //监听 ： 当DB生成删除变化时
    @DeleteListenPoint
    public void onEvent3(CanalEntry.EventType eventType) {
        System.err.println("DeleteListenPoint");
    }*/


    //监听 ： 当DB生成自定义变化时
    //destination : Canal服务器的名称
    //schema : DB中数据库名称
    //table : DB中 表的名称
    //eventType :  DML 语句  + DDL  +　DCL　＝　SQL语句　
    @ListenPoint(destination = "example",
            schema = "gmall_product",
            table = {"sku_info", "base_trademark"},
            eventType = {
               CanalEntry.EventType.UPDATE,
               CanalEntry.EventType.INSERT,
               CanalEntry.EventType.DELETE
            })
    public void onEvent4(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
        System.out.println("Canal监听到了数据 ：数据如下");

        rowData.getAfterColumnsList().forEach((c) -> {
                //C相当于Map
            System.out.println("K:" + c.getName() + "::::V:" + c.getValue());

                });
    }
}
